#include <stdio.h>
#include <stdlib.h> // system("clean");
#include "include/menu.h"
#include "include/function.h"
LIST Head = NULL; // 创建头节点指针
// 定义函数指针类型
typedef void (*Menupointer)(void);
// 定义函数指针数组
Menupointer menu_arr[] = {Menu1, Menu2, Menu3, Menu4, Menu5};
// 计算菜单选项数量
int MenuNum = sizeof(menu_arr) / sizeof(Menupointer);
int main()
{
    int choice;
    while (1)
    {
        system("clear");
        // 显示菜单
        help();
        printf("\n请选择一个菜单项:\n");
        choice = getchar();
        fflush(stdin); // 清除缓冲区
        // 检查用户输入是否在有效范围内或者是否为ESC (ASCII 27),无效的选择，请重新输入。
        if ((choice < '1' || choice >= MenuNum + 48) && choice != 27)
            continue;
        if (choice == 27)
            choice = MenuNum; // 判断是否输入的值是ESC，如果是则变成最后一个数
        if (choice >= '1' && choice < MenuNum + 48)
            choice = choice - 48; // 判断是否输入的值是'1'~'4'转化为对应数值
        menu_arr[choice - 1]();
        if (choice == MenuNum)
        {
            listfree(&Head);
            return 0; // 如果用户输入的是ESC就退出
        }
    }
    return 0;
}